package educar.controllers;

import educar.gui.AdminView;
import educar.gui.IView;
import educar.gui.LoginView;
import educar.gui.StudentView;
import educar.gui.TeacherView;
import educar.idioma.Locale;
import educar.models.Session;
import educar.models.User;

/**
 * Controla el inicio de sesion
 */
public class LoginController implements IController {
	private LoginView view;

	public void process(String model){
		if(null!=view)
			if (User.authenticate(view.getUsername(), view.getPassword())){
				view.present(Locale.LOGGED_MSJ+": " + Session.getCurrentUser().getUsername());
				//una vez que ingrese con un usuario cierro la ventana
				view.close();
				//y segun el usuario abro la ventana correcta
				openWindow(Session.getCurrentUser().getRole());
				
			} else {
				view.present(Locale.WRONG +" " + Locale.USER_NAME + " / " + Locale.PASSWORD);
			}
		
		
	}

	/**
	 * Funcion que abre la ventana principal segun usuario
	 * @param role "rol del usuario 'admin' 'student' 'teacher' "
	 */
	public void openWindow(String role){		
		/*Segun el tipo de usario es la venta que Abro*/
		if (role.equals("admin")){
			openAdminWindow();					
		}
		if (role.equals("teacher")){
			openTeacherWindow();
		}
		if (role.equals("student")){
			openStudentWindow();
		}
		if(!role.equals("student") && !role.equals("teacher") && !role.equals("admin")){
			view.present(Locale.INVALID_ROLE_MSJ);
		}
	}
	
	/**
	 * Abre la ventana de Administrador	
	 */
	private void openAdminWindow(){
		new AdminView();
	}
	
	/**
	 * Abre la ventana de Docentes
	 */
	private void openTeacherWindow(){
		new TeacherView(Session.getCurrentUser());
	}
	
	/**
	 * Abre la ventana de Estudiantes
	 */
	private void openStudentWindow(){
		new StudentView(Session.getCurrentUser());
	}
	
	
	public void setView(IView view) {
		this.view = (LoginView) view;	
	}
}
